package com.example.oms.service;

import com.example.oms.vo.PrescriptionAndMedListVo;
import com.example.oms.entity.*;

import java.util.Date;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;

public interface DoctorService {
    /**
     * 根据医生id获取问诊队列
     * */
    List<Map<String,Object>>  getQueueListByDocId(int docId);

    /**
     * 根据病人id获取病人信息
     */
    Patients getPatientDetailById(int id);

    /**
     * 根据医生id和日期获取医生当日所有挂号信息
     */
    List<Registrations> getRegistrationDetailByDocIdAndDate(int docId, Date date);

    List<Map<String,Object>> getAllPatientsByIdAndDate(int docId, Date date);

    /**
     * 根据一个病人id列表获取所有病人信息
     */
    List<Patients> getPatientsByIds(List<Integer> ids);


    /**
     * 上传病历信息以修改
     */
    void updateDiagRecord(DiagRecords diagRecords);

    /**
     * 按病历id获取该病历的处方信息
     */
    List<PrescriptionAndMedListVo> getPrescriptionByDiagRecordId(int diagRecordId);

    /**
     * 按病人id和分页号获取该病人的处方
     * */
    List<PrescriptionAndMedListVo> getPresListByPatientId(int patientId, int pageNum);

    /**
     * 按处方id获取处方信息
     */
    PrescriptionAndMedListVo getPrescriptionByPresId(int presId);

    /**
     * 新增一个处方
     * */
    void newPrescription(PrescriptionAndMedListVo prescriptionAndMedList);

    /**
     * 新增检查项目
     * */
    void newDiag(DiagReports diagReports);

    /**
     * 按病历id检索该病历包括的所有检查报告
     * */
    List<DiagReports> getDiagReportsByDiagRecordId(int diagRecordId);

    /**
     * 获取所有药品
     * */
    List<Meds> getAllMeds();

    /**
     * 更新挂号状态
     * */
    int updateRegStatusByRegId(int regId,String status);

    /**
     * 根据挂号id获取对应病历
     * */
    DiagRecords getRecordByRegId(int regId);

    /**
     * 新增病历
     * */
    int newDiagRecord(DiagRecords diagRecords);

    /**
     * 弹出队首
     * */
    void popQueue(int docId,String period);

    Registrations getRegByRegId(int regId);
}
